VI 命令备忘
更新日期:
我的一些常用的 vi 使用命令备忘。
新建
- 在 shell 直接 vi file 就能创建以 file 命名的文件。
- :e file,在里面内存打开(创建)file 文件。(其中 : 表示是命令模式)
保存
- :s,保存当前文件。
- :q!,退出,不保存。
- :q,退出当前窗口。:qa,退出所有窗口。
- :c,关闭当前窗口。
复制、粘贴
- c, 复制。
- p, 粘贴。
移动
- i, 上。
- k, 下。
- j, 左。
- l, 右。
- gg, 回到文件最第一行。
- GG, 回到文件最后一行。
- nG, 跳转到第n行。
- ctrl+i(k,j,l), 在窗口之间移动。
跳转
- ctrl+o, 能回到跳转前的位置。
- ctrl+i, 就是o的反操作。
撤销
- u, 撤销。
- ctrl+r, 恢复(就是反撤销)。
搜索
- / xx, 向后搜索 xx。支持正则表达式。
- ? xx, 向前搜索 xx。
- n, 下一个。
- N, 上一个。
替换
:s,用法为 “:[range]s/target/replace/g” 。其中 range 可以是全文(%),target 是你要替换的字符串,replace 是你要换成的东西(/是分隔符),后面的 g 参数,表示替换一行中所有出现的字符串。例如:你要全文替换 hello 为 hello_world
:%s/hello/hello_world/g
典型的用法就是在 linux 下打开某些 window 下编辑的代码,会在每行结尾有一个 ^M 的符号,可以使用替换命令替换掉: %s/^M//g (注意这里输入的 ^M 要按住 ctrl + v 和 ctrl + M 输入)。
大小写转化
gu(gU),u是变小写,U是变大写,后面可以接范围命令,例如 guw 就是把当前一个单词变成小写。
v
视图模式,可以使用任何移动命令进行选择,选择后可以使用复制、粘贴、对齐等操作。
标记
:ma A-Z(a-z),在当前位置做标记。可以设置 A 到 Z 个标记。
:marks,显示当前做的标记。
` A-Z,跳转到某个标记处。
q
录制命令。qx:其中 x 是录制宏的编号,应该可以从 a ~ z 吧。按 qx 后就进入了录制模式,vi 会有 rercdring 的提示,录制完成后,再次按 q 推出。之后用 @x 来播放,x 就是宏的编号。@x 前面可以加范围的命令,例如 10@x ,表示10行进行这个命令。
代码展开
代码展开命令。有些代码默认是折叠的,使用 zo 命令可以全部展开。
- zo 展开当前
- zO 展开所有
- zr 展开所有
==
连续按2次 “=” 号键,就会自动对该行代码进行缩进对齐。并且前面可以加行数前缀。
分屏编辑
- split: 上下分屏
- vsplit: 左右分屏
:nohl
这是vi里的一个命令来的,就是去掉一些搜索结果时候的高亮显示。有时候高亮太多时,用这个比较好。
16进制编辑
需要借助 linux 下的命令行工具 xxd(一般系统都自带了的): xxd text > text-hex,然后再用 vi 打开就行了,最好不好在 vi 中用使用调用外部命令的方式(:!xxd)直接改变当前的文本,容易出现转化错误。在外面转化出另外一个临时文件比较好。
外部命令
在命令模式下,前面加 ! 号,然后后面就可以执行外部 shell 命令。例如 :!pwd 就是显示当前路径。
插件使用
插件、插件配置以及 vi 配置在附件里。
可以看附件里的 vi 配置设置的快捷键参数,例如 F2、F3 这些。
wm(这个是 vi 配置里的快捷键),开启文件管理插件,类似 IDE 的那种。
superTab
- tab 键进行标签切换。
- :b 1,切换到1号标签,标签号在 tab 上有显示。
- 在标签上按 d 键可以关闭这个标签。
如果窗口大小乱了,可以使用窗口管理命令:
- ctrl + w + “+”, 放大该窗口。(注意是先按 ctrl,再按 w,再按 +号)
- ctrl + w + “-“, 缩小该窗口。